//
//  EmotionTextView.swift
//  1120自定义键盘
//
//  Created by 江先铨 on 15/11/23.
//  Copyright © 2015年 jxqstatic. All rights reserved.
//

import UIKit

class EmotionTextView: UITextView {
    
    func fullText() -> String {
    
        
        let att = attributedText
        
        var strMM = String()
        //遍历属性文本的属性
        att.enumerateAttributesInRange(NSRange(location: 0, length: att.length), options: [], usingBlock: { (dict, range , _) -> Void in
            
            if let attach = dict["NSAttachment"] as? EmotionAttachment {
              //  print("是图片")
                //在这里取出属性文字
                let text = attach.chs
                strMM += text ?? ""
                
                
            } else {
                
                //print("是文字")
                let str = (att.string as NSString).substringWithRange(range)
                strMM += str
            }
        })
  
        return strMM
    }
    
    
    func insertAttrText(em : Emotion) {
    
    
        
        //空表情 判断当前表情是否为空表情 如果为空表情就直接 返回 不做任何操作
        if em.isEmpty {
            print("空表情")
            return
        }
        
        //删除
        if em.isRemove {
            //如果是删除按钮的 就执行回删操作 直接删除
            deleteBackward()
            return
        }
        
        //如果为 按钮表情的话 就直接替换成当前的 字符emoji 字符创
        if em.code != nil {
            
            replaceRange(selectedTextRange!, withText: em.emojiStr ?? "")
            
            return
        }
        
        //点击表情图片
        //1. 将点击的图片添加到附件中
        let attachment = EmotionAttachment()
        
        let imageText = attachment.emotionImageText(em, font: font!)
        
        let range = selectedRange
        
        //获取textView的属性文本
        let strM = NSMutableAttributedString(attributedString: attributedText)
        //用属性文本 替换当期被选中的属性文本
        strM.replaceCharactersInRange(selectedRange, withAttributedString: imageText)
        
        //把属性文本添加到textview 上
        attributedText = strM
        
        //恢复光标的位置  位置加一  长度为0 恢复光标的适合 不需要设置长度  只需要每次位置加以 就可以了
       selectedRange = NSMakeRange(range.location + 1, 0)
    }
}
